import axios from 'axios';
import {useAuthStore} from "@/stores/authStore.js";

const http = axios.create({
    baseURL: import.meta.env.VITE_API_BASE_URL,
    headers: {
        'Content-Type': 'application/json',
    },
});

// 开发环境启用 Mock
if (import.meta.env.DEV && import.meta.env.VITE_MOCK_ENABLED === 'true') {
    console.log('[Mock] 启用Mock数据');
    import('@/mock').then(({ setupMock }) => {
        setupMock(http);
    });
}

//请求拦截器
http.interceptors.request.use(
    (config) => {
        const authStore = useAuthStore();
        config.headers['sa-token'] = `Bearer ${authStore.token}`;
        return config;
    },
    (error) => {
        return Promise.reject(error);
    }
);

//响应拦截器
http.interceptors.response.use(
    response => {
        // 解构后端标准响应格式
        const { code, data, message } = response.data

        // 200为成功状态码（根据实际API调整）
        return code === 200 ? data : Promise.reject(message)
    },
    error => {
        // 统一错误处理
        if (error.response?.status === 401) {
            console.error('登录过期，请重新登录')
            // 实际项目应跳转登录页：router.push('/login')
        }
        return Promise.reject(error.message || '请求失败')
    }
)
export default http;